main() {char a[20]="How are you?",b[20];scanf("%s",b);printf("%s %s\n",a,b);

来源:百度知道 编辑:UC知道 时间:2024/05/23 14:47:42
运行结果是How are you? How 可我觉得是How How 输出字符串a时为什么遇到第一个空格不终止啊 谢谢大家帮忙啊
还有个问题 double x;x=-3223.87654;printf("%-6.2e\n",x);
输出为-3.2e+03 为什么啊 这个输出格式里的6和2到底指什么 谢谢

字符串是以看不见的 '\0'字符结束的,不是空格,所以How are you? 可以打印完; 至于输入的时候,scanf用空格当做分隔符了,所以再输出b的时候没有了后半截。

printf的格式的意义用MSDN搜 “Format Specification Fields: printf and wprintf Functions”

6.2的意思是,输出至少(注意是至少)占用6位(包括小数点".", e+003 的"e+" ),同时小数点后有两位。

你把代表左对齐的“-”去掉,然后打印

int main()
{
double x;x=-3223.87654;

printf("%e\n",x);
printf("%20e\n",x);

}

很容易数明白的。

b遇到第一个空格终止时因为scanf遇到空格就不再读,而不是因为printf不打印。

输出终止?字符串a,b连续输出的。
读取的时候像ls所说的一样,scanf跳过首空白读取内容后遇到空白就返回。

printf("%-6.2e\n",x);
6表示输出数据占的总的宽度,2表示保留小数位的个数。

1.字符串不是以空格结尾的,而是以'\0'结尾的.
2,6指的是将显示字符的总宽度,.2表示小数点后保留两位..
3,scanf在接收字符时遇到空格就不再读入.